package interfaz;

import javax.swing.JPanel;
import javax.swing.BoxLayout;

import java.awt.GridBagLayout;

import javax.swing.JLabel;

import java.awt.GridBagConstraints;
import java.awt.Insets;

import javax.swing.JComboBox;
import javax.swing.JTextPane;
import javax.swing.JTable;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Color;
import java.util.ArrayList;
import java.util.Iterator;

import sistemaIncidencias.Comentario;
import sistemaIncidencias.Estado; 


public class InterfazIncidenciaCliente extends JPanel implements IVista{
	private JTable tablaSeguimiento;
	private JTable tablaMensajes;
/*	private JTable tablaSeguimiento;
	private JTable tableMensajes;
	private JComboBox tipoIncidencia;
	private JLabel lblDescripcion;
	private JTable tablaMensajes;*/
	private JButton btnAgregar; 
	private JTextPane textoDescripcion;
	private JTextPane nuevoMensaje;
	private JComboBox tipoIncidencia;

	/**
	 * Create the panel.
	 */
	public InterfazIncidenciaCliente() {
		
		GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.columnWidths = new int[]{0, 0, 0, -507, 0};
		gridBagLayout.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
		gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
		gridBagLayout.rowWeights = new double[]{0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, Double.MIN_VALUE};
		setLayout(gridBagLayout);
		
		JLabel lblNewLabel = new JLabel("Tipo de incidencia");
		GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
		gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
		gbc_lblNewLabel.gridx = 1;
		gbc_lblNewLabel.gridy = 0;
		add(lblNewLabel, gbc_lblNewLabel);
		
		tipoIncidencia = new JComboBox();
		GridBagConstraints gbc_tipoIncidencia = new GridBagConstraints();
		gbc_tipoIncidencia.insets = new Insets(0, 0, 5, 0);
		gbc_tipoIncidencia.fill = GridBagConstraints.HORIZONTAL;
		gbc_tipoIncidencia.gridx = 3;
		gbc_tipoIncidencia.gridy = 0;
		add(tipoIncidencia, gbc_tipoIncidencia);
		
		JLabel lblDescripcion = new JLabel("Descripcion");
		GridBagConstraints gbc_lblDescripcion = new GridBagConstraints();
		gbc_lblDescripcion.insets = new Insets(0, 0, 5, 5);
		gbc_lblDescripcion.gridx = 1;
		gbc_lblDescripcion.gridy = 2;
		add(lblDescripcion, gbc_lblDescripcion);
		
		textoDescripcion = new JTextPane();
		textoDescripcion.setBackground(new Color(245, 222, 179));
		GridBagConstraints gbc_textoDescripcion = new GridBagConstraints();
		gbc_textoDescripcion.insets = new Insets(0, 0, 5, 0);
		gbc_textoDescripcion.fill = GridBagConstraints.HORIZONTAL;
		gbc_textoDescripcion.gridx = 3;
		gbc_textoDescripcion.gridy = 2;
		add(textoDescripcion, gbc_textoDescripcion);
		
		JLabel lblSeguimiento = new JLabel("Seguimiento");
		GridBagConstraints gbc_lblSeguimiento = new GridBagConstraints();
		gbc_lblSeguimiento.insets = new Insets(0, 0, 5, 5);
		gbc_lblSeguimiento.gridx = 1;
		gbc_lblSeguimiento.gridy = 3;
		add(lblSeguimiento, gbc_lblSeguimiento);
		

		tablaSeguimiento = new JTable();
		GridBagConstraints gbc_tablaSeguimiento = new GridBagConstraints();
		gbc_tablaSeguimiento.insets = new Insets(0, 0, 5, 0);
		gbc_tablaSeguimiento.fill = GridBagConstraints.BOTH;
		gbc_tablaSeguimiento.gridx = 3;
		gbc_tablaSeguimiento.gridy = 3;
		add(tablaSeguimiento, gbc_tablaSeguimiento);
		
		JLabel lblMensajes_1 = new JLabel("Mensajes");
		GridBagConstraints gbc_lblMensajes_1 = new GridBagConstraints();
		gbc_lblMensajes_1.insets = new Insets(0, 0, 5, 5);
		gbc_lblMensajes_1.gridx = 1;
		gbc_lblMensajes_1.gridy = 5;
		add(lblMensajes_1, gbc_lblMensajes_1);
		
	
		
		tablaMensajes = new JTable();
		GridBagConstraints gbc_tablaMensajes = new GridBagConstraints();
		gbc_tablaMensajes.anchor = GridBagConstraints.SOUTH;
		gbc_tablaMensajes.insets = new Insets(0, 0, 5, 0);
		gbc_tablaMensajes.fill = GridBagConstraints.HORIZONTAL;
		gbc_tablaMensajes.gridx = 3;
		gbc_tablaMensajes.gridy = 5;
		add(tablaMensajes, gbc_tablaMensajes);
		
		nuevoMensaje = new JTextPane();
		nuevoMensaje.setBackground(new Color(245, 222, 179));
		GridBagConstraints gbc_nuevoMensaje = new GridBagConstraints();
		gbc_nuevoMensaje.insets = new Insets(0, 0, 5, 0);
		gbc_nuevoMensaje.fill = GridBagConstraints.HORIZONTAL;
		gbc_nuevoMensaje.gridx = 3;
		gbc_nuevoMensaje.gridy = 6;
		add(nuevoMensaje, gbc_nuevoMensaje);
		
		/*btnAgregarS = new JButton("Agregars");
		btnAgregarS.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		GridBagConstraints gbc_btnAgregarS = new GridBagConstraints();
		gbc_btnAgregarS.insets = new Insets(0, 0, 5, 0);
		gbc_btnAgregarS.gridx = 3;
		gbc_btnAgregarS.gridy = 5;
		add(btnAgregarS, gbc_btnAgregarS);*/
		
		btnAgregar = new JButton("Agregar");
		btnAgregar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		GridBagConstraints gbc_btnAgregar = new GridBagConstraints();
		gbc_btnAgregar.insets = new Insets(0, 0, 5, 0);
		gbc_btnAgregar.gridx = 3;
		gbc_btnAgregar.gridy = 7;
		add(btnAgregar, gbc_btnAgregar);

	}
	
	
	public void populateTableSeguimiento(ArrayList<Estado> estados){
		
		Object contenido[][] = new Object[estados.size()+1][2];
		
		int contadorFilas = 1;
		Iterator<Estado> it = estados.iterator();
		
		contenido[0][0] = "FECHA";
		contenido[0][1] = "DESCRIPCION";
		
		while(it.hasNext()){
			Estado estado = it.next();
		
			contenido[contadorFilas][1] = estado.getDescripcion();
			contenido[contadorFilas][0] = estado.getFecha();
			
			
			contadorFilas++;
		}
		
		tablaSeguimiento.setModel(new DefaultTableModel(
				contenido,
				new String[] {
					"Fecha", "Descpricion"
				}
			));
		
		tablaSeguimiento.setBackground(Color.WHITE);
		GridBagConstraints gbc_table = new GridBagConstraints();
		gbc_table.fill = GridBagConstraints.BOTH;
		gbc_table.gridwidth = 4;
		gbc_table.insets = new Insets(0, 0, 5, 5);
		gbc_table.insets = new Insets(0, 0, 5, 5);
		gbc_table.gridx = 2;
		gbc_table.gridy = 3;
		add(tablaSeguimiento, gbc_table);
	}

public void populateTableMensajes(ArrayList<Comentario> comentarios){
	
	Object contenido[][] = new Object[comentarios.size()+1][2];
	
	int contadorFilas = 1;
	Iterator<Comentario> it = comentarios.iterator();
	
	contenido[0][0] = "FECHA";
	contenido[0][1] = "DESCRIPCION";
	
	
	while(it.hasNext()){
		Comentario comentario = it.next();
		contenido[contadorFilas][1] = comentario.getDescripcion();
		contenido[contadorFilas][0] = comentario.getFecha();
		
		
		
		contadorFilas++;
	}
	
	tablaMensajes.setModel(new DefaultTableModel(
			contenido,
			new String[] {
				"Fecha", "Descpricion"
			}
		));
	
	tablaMensajes.setBackground(Color.WHITE);
	GridBagConstraints gbc_table = new GridBagConstraints();
	gbc_table.insets = new Insets(0, 0, 5, 0);
	gbc_table.fill = GridBagConstraints.BOTH;
	gbc_table.gridx = 3;
	gbc_table.gridy = 5;
	add(tablaMensajes, gbc_table);
}

	

	public JTable getTablaSeguimiento() {
		return tablaSeguimiento;
	}

	public void setTablaSeguimiento(JTable tablaSeguimiento) {
		this.tablaSeguimiento = tablaSeguimiento;
	}
	
	public void setTextoDescripcion(String textoDescripcion) {
		this.textoDescripcion.setText(textoDescripcion);
	}
	
	public String getNuevoMensaje() {
		return nuevoMensaje.getText();
	}
	

	public JTable getTablaMensajes() {
		return tablaMensajes;
	}

	public void setTablaMensajes(JTable tablaMensajes) {
		this.tablaMensajes = tablaMensajes;
	}

	public JButton getBtnAgregar() {
		return btnAgregar;
	}

	public void setBtnAgregar(JButton btnAgregar) {
		this.btnAgregar = btnAgregar;
	}

	public JTextPane getTextoDescripcion() {
		return textoDescripcion;
	}

	public void setTextoDescripcion(JTextPane textoDescripcion) {
		this.textoDescripcion = textoDescripcion;
	}
	public void registerListener(ActionListener listener) {
		
		this.btnAgregar.addActionListener(listener);
		
	}
	public void update() {
		this.invalidate();
		this.repaint();
		this.revalidate();
		
	}

	
	public void SetVisible(boolean visible) {

		
	}

}
